Sketch Lettura tastiera matrice 3x4
/* 2
Nel seguente sketch vengono visualizzate tre colonne, In base al tasto premuto viene visualizzato il numero
della conversione binario-decimale generato dalla operazione AND di mascheratura. Si accede direttamente
ai registri interni del micro per la gestione delle porte I/O.
*/
unsigned char a;
unsigned char b;
unsigned char c;
int rit = 100;
void setup ()
{
pinMode (7, INPUT_PULLUP); // Attiva resistenza interna di Pull-up (nel circuito di fig. 3 la resistenza di
pull-up è esterna)
pinMode (6, INPUT_PULLUP);
pinMode (5, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
Serial.begin(9600);
}
 void loop ()
 {
// Dispongo il pin 8 come output
DDRB = 0b00000001; // PIN 13,.....,8 1 = pin_Out, 0 = Pin_In
// Porto a 0 la prima colonna A
PORTB =0b11111110; // Pin 8 = Low
a = PIND & 0b11110000; // And logico
switch (a)
{
 case 112:
 Serial.println("1");
 break;
 case 176:
 Serial.println("4");
 break;
 case 208:
 Serial.println("7");
 break;
 case 224:
 Serial.println("*");
 break;
}
delay(rit);
// Dispongo il pin 9 come output
DDRB = 0b00000010; // PIN 13,..,8 1 = pin_Out, 0 = Pin_In
// Porto a 0 la seconda colonna B
 PORTB =0b11111101; // Pin 9 = Low
b = PIND & 0b11110000; // And logico
switch (b)
{
 case 112:
 Serial.println("2");
 break;
 case 176:
 Serial.println("5");
 break;
 case 208:
 Serial.println("8");
 break;
 case 224:
 Serial.println("0");
 break;
}
delay(rit);
// Dispongo il pin 10 come output
DDRB = 0b00000100; // PIN 13,,8 1 = pin_Out, 0 = Pin_In
// Porto a 0 la terza colonna C
PORTB =0b11111011; // Pin 10 = Low
c = PIND & 0b11110000; // And logico
switch (c)
{
 case 112:
 Serial.println("3");
 break;
 case 176:
 Serial.println("6");
 break;
 case 208:
 Serial.println("9");
 break;
 case 224:
 Serial.println("#");
 break;
}
delay(rit);
Serial.print(a); Serial.print("\t"); Serial.print(b); Serial.print("\t"); Serial.println(c);
}